const express = require('express');
const router = express.Router();
const Users = require("../../../controllers/sys_users.controller");

/**
 * @typedef userBody
 * @property {string} deptId - 部门ID
 * @property {string} userName - 账号
 * @property {string} phone - 手机号码
 * @property {boolean} status - 状态
 * @property {number} currentPage - 当前页码
 * @property {number} pageSize - 每页条数
 */

/**
 * 查询用户信息列表
 * @route POST /api/private/user
 * @group 用户管理 
 * @security JWT
 * @param {userBody.model} body.body.required - 请求参数
 * @returns {PageModel.model} 成功 返回列表
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/", Users.findAll);

/**
 * 创建用户信息
 * @route POST /api/private/user/add
 * @group 用户管理
 * @security JWT
 * @returns {usersModel.model} 成功 返回列表
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/add", Users.create);
/**
 * 删除用户信息
 * @route POST /api/private/user/delete
 * @group 用户管理
 * @security JWT
 * @param {object} body.body - 请求参数 用户 id 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/delete", Users.delete);
/**
 * 更新用户信息列表
 * @route POST /api/private/user/edit
 * @group 用户管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/edit", Users.update);
/**
 * 修改用户密码
 * @route POST /api/private/user/password
 * @group 用户管理
 * @security JWT
 * @param {object} body.body - 请求参数 用户 id,pwd 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/password", Users.updatePwd);

/**
 * 查询用户角色
 * @route POST /api/private/user/role
 * @group 用户管理
 * @security JWT
 * @param {object} body.body - 请求参数 用户 userId 必填
 * @returns {number[]} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/role", Users.findRole);

/**
 * 保存用户角色
 * @route POST /api/private/user/role/save
 * @group 用户管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/role/save", Users.saveRole);

/**
 * 个人信息
 * @route GET /api/private/user/info
 * @group 用户管理
 * @security JWT
 * @returns {usersModel.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.get("/info", Users.findOne);
/**
 * 修改个人信息
 * @route POST /api/private/user/info/edit
 * @group 用户管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/info/edit", Users.updateInfo);

/**
 * 获取验证码
 * @route GET /api/private/user/getCode
 * @group 用户管理
 * @security JWT
 * @param {object} body.body - 请求参数 type,value 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.get("/getCode", Users.getCode);

/**
 * 修改电话邮箱
 * @route POST /api/private/user/editValue
 * @group 用户管理
 * @security JWT
 * @param {object} body.body - 请求参数 type,value,code 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/editValue", Users.updatePhoneOrEmail);
/**
 * 修改个人密码
 * @route POST /api/private/user/editPwd
 * @group 用户管理
 * @security JWT
 * @param {object} body.body - 请求参数 oldPwd,newPwd 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/editPwd", Users.updatePwdSelf);

module.exports = router;
